EINLEITUNG - Assembler Source 
   0 ;
   1 ;einleitungsroutinen
   2 ;
   3 ;
   4 ;
   5 EINLMAP     equ $B000
   6 EINLCOL     equ $E000
   7 ;
   8 SCREENEND   equ 200
   9 ANFPOS      equ 50
  10 ENDEPOS     equ 200
  11 SPOS        equ 221
  12 ;
  13 ;
  14 ;
  15 ;
  16             sta MAPSPALTE
  17 ;
  18             jsr EINIT
  19             jsr ESCREENON
  20             ldx #1
  21             jsr PLSPRANI
  22 ;
  23 EMAIN       jsr WAITSTICK
  24             beq EMAIN
  25             stx PLRDIR
  26 EMAININ     ldx PLRDIR
  27             jsr PLSPRANI
  28             txa
  29             beq EMAINA
  30             cmp #2
  31             bcc EMAIN
  32             jsr EMOVE
  33             lda FREECTR
  34             bne EMAININ
  35             beq EMAIN
  36 ;
  37 EMAINA      lda PLRPOSX
  38             cmp #246
  39             bne EMAIN
  40             lda #0
  41             sta V1
  42             dex
  43 ;
  44 ;
  45 ;
  46 EMOVE       jsr POSCHK
  47             bcs EMOVEX
  48             ldx PLRDIR
  49             lda PLRPOSX
  50             bne EMOVEAC
  51             cpx #3
  52             bcc EMOVEAA
  53             lda MAPSPALTE
  54             cmp #SCREENEND
  55             bcc EMOVEA
  56 EMOVEAC     jmp SPRMOV
  57 EMOVEA      inc MAPSPALTE
  58             bne EMOVEB
  59 EMOVEX      dex
  60 ;
  61 EMOVEAA     lda MAPSPALTE
  62             bne EMOVEAB
  63             jmp SPRMOV
  64 EMOVEAB     dec MAPSPALTE
  65 ;
  66 EMOVEB      jsr GETSCRPTR
  67             lda #7
  68             sta SCROLLFL
  69             ldx SHAPE
  70             bne EMOVEC
  71             jsr SETVOICE1
  72 ;
  73 EMOVEC      lda #110
  74             sec
  75             jsr MAINTIMER
  76             ldx PLRDIR
  77             jsr PLSPRANI
  78             jsr ESPRSCR
  79             lda SCROLLFL
  80             cpx #3
  81             bcs EMOVED
  82             jsr EMOVELFT
  83             jmp EMOVEE
  84 EMOVED      jsr EMOVERGT
  85 EMOVEE      clc
  86             jsr MAINTIMER
  87             lda PLRDIR
  88             sta MAPMOVDIR
  89             dec SCROLLFL
  90             bpl EMOVEC
  91             dex
  92 ;
  93 ;
  94 EMOVELFT    cmp #7
  95             bne EMOVELFTE
  96             cpx MAPMOVDIR
  97             beq EMOVELFTA
  98             jsr ESCRPRINT
  99 EMOVELFTA   lda #0
 100             jsr SWSCREEN
 101 EMOVELFTB   lda MAPSPALTE
 102             pha
 103             beq EMOVELFTC
 104             dec MAPSPALTE
 105 EMOVELFTC   jsr GETSCRPTR
 106             pla
 107             sta MAPSPALTE
 108             lda #7
 109             sta SCROLLFL
 110             dex
 111 ;
 112 EMOVELFTE   inc SCRBITS
 113             jmp SCRCOPY
 114 ;
 115 ;
 116 EMOVERGT    tay
 117             bne EMOVERGTA
 118             lda #7
 119             jmp SWSCREEN
 120 ;
 121 EMOVERGTA   dec SCRBITS
 122             jmp SCRCOPY
 123 ;
 124 ;
 125 ;
 126 GETSCRPTR   lda MAPSPALTE
 127             ldy #EINLMAP>
 128             sta COLPTR1+1
 129             sty COLPTR1+2
 130             lda #0
 131             ldy NEXTVRAM
 132             sta COLPTR2+1
 133             sty COLPTR2+2
 134             dex
 135 ;
 136 GETCOLPTR   lda MAPSPALTE
 137             ldy #EINLCOL>
 138             sta COLPTR1+1
 139             sty COLPTR1+2
 140             lda #0
 141             ldy #CRAM>
 142             sta COLPTR2+1
 143             sty COLPTR2+2
 144             dex
 145 ;
 146 ;
 147 ESCREENON   jsr GETSCRPTR
 148             jsr ESCRPRINT
 149             lda #7
 150             jmp SWSCREEN
 151 ;
 152 ;
 153 ESCRPRINT   lda #7
 154             sta SCROLLFL
 155 ESCRPRA     jsr SCRCOPY
 156             dec SCROLLFL
 157             bpl ESCRPRA
 158             dex
 159 ;
 160 ;
 161 SWSCREEN    pha
 162             jsr GETCOLPTR
 163             lda #0
 164             sta MAPSWFLG
 165 SWSCREENA   lda MAPSWFLG
 166             beq SWSCREENA
 167             lda NEXTVRAM
 168             sta MOMVRAM
 169             pla
 170             sta SCRBITS
 171             jsr COLCOPY
 172             lda MOMVRAM
 173             cmp #VRAM1>
 174             beq SWSCREENB
 175             lda #VRAM1>
 176             dat $2C
 177 SWSCREENB   lda #VRAM2>
 178             sta NEXTVRAM
 179             dex
 180 ;
 181 ;
 182 ;
 183 SCRCOPY     ldy #2
 184             dat $2C
 185 COLCOPY     ldy #14
 186 COLCOPYA    ldx #39
 187 COLPTR1     lda $FFFF,X
 188 COLPTR2     sta $FFFF,X
 189             rts
 190             bpl COLPTR1
 191             lda COLPTR1+1
 192             clc
 193             adc #240
 194             sta COLPTR1+1
 195             bcc COLCOPYB
 196             inc COLPTR1+2
 197 COLCOPYB    lda COLPTR2+1
 198             clc
 199             adc #40
 200             sta COLPTR2+1
 201             bcc COLCOPYC
 202             inc COLPTR2+2
 203 COLCOPYC    dey
 204             bne COLCOPYA
 205             dex
 206 ;
 207 ;
 208 ;
 209 SPRMOV      cpx #3
 210             bcc SPRMOVLFT
 211 ;
 212 SPRMOVRGT   lda PLRPOSX
 213             cmp #15
 214             bne SPMOVRGTA
 215             dex
 216 SPMOVRGTA   inc PLRPOSX
 217             jmp SPRMVEXE
 218 ;
 219 SPRMOVLFT   lda PLRPOSX
 220             cmp #246
 221             bne SPMOVLFTA
 222             dex
 223 SPMOVLFTA   dec PLRPOSX
 224 ;
 225 SPRMVEXE    lda #7
 226             sta SCROLLFL
 227             ldx SHAPE
 228             bne SPRMVEXEA
 229             jsr SETVOICE1
 230 SPRMVEXEA   lda #110
 231             sec
 232             jsr MAINTIMER
 233             ldx PLRDIR
 234             jsr PLSPRANI
 235             ldy PLRDIR
 236             ldx #0
 237             lda #1
 238             jsr SPRMOVE
 239             clc
 240             jsr MAINTIMER
 241             dec SCROLLFL
 242             bpl SPRMVEXEA
 243             dex
 244 ;
 245 ;
 246 ;
 247 ESPRSCR     txa
 248             pha
 249             lda V1
 250             and #2
 251             beq ESPRSCRX
 252             lda PLRDIR
 253             eor #1
 254             tay
 255             lda #1
 256             tax
 257             jsr SPRMOVE
 258             bcc ESPRSCRX
 259             lda #1
 260             sta V1
 261             lda #SPOS
 262             sta SHIPPOS
 263 ESPRSCRX    pla
 264             tax
 265             dex
 266 ;
 267 ;
 268 POSCHK      ldx PLRDIR
 269             lda MAPSPALTE
 270             clc
 271             adc #18
 272             clc
 273             adc PLRPOSX
 274             sta B
 275             clc
 276             adc PCHKADCDT,X
 277             sta A
 278             ldx #0
 279 POSCHKA     lda POSCHKDTA,X
 280             beq POSCHKX
 281             cmp A
 282             beq POSCHKB
 283             inx
 284             bne POSCHKA
 285 POSCHKX     clc
 286             dex
 287 ;
 288 POSCHKB     txa
 289             asl
 290             tay
 291             lda POSCHKDTB,Y
 292             sta POSCHKC+1
 293             lda POSCHKDTB+1,Y
 294             sta POSCHKC+2
 295 POSCHKC     jsr $FFFF
 296             dex
 297 ;
 298 PCHKADCDT   dat 0,0,255,1
 299 ;
 300 POSCHKDTA   dat 109,110,221,222,160,0
 301 POSCHKDTB   dat MANON,SHIPON,SHIPON,MANON,MCSET
 302 ;
 303 ;
 304 ;
 305 SHIPON      lda SHAPE
 306             beq SHIPONA
 307             clc
 308             dex
 309 SHIPONA     lda A
 310             cmp SHIPPOS
 311             beq SHIPONB
 312             sec
 313             dex
 314 SHIPONB     lda #1
 315             sta SHAPE
 316             jsr PLRONSCR
 317             lda #139
 318             sta V1+4
 319             ldx PLRDIR
 320             jsr PLSPRANI
 321             lda #1
 322             sta V1
 323             clc
 324             dex
 325 ;
 326 MANON       lda SHAPE
 327             bne MANONA
 328             clc
 329             dex
 330 MANONA      lda #0
 331             sta SHAPE
 332             lda B
 333             sta SHIPPOS
 334             jsr PLRONSCR
 335             lda V1+3
 336             sta V1+5
 337             lda #133
 338             sta V1+4
 339             lda #3
 340             sta V1
 341             ldx PLRDIR
 342             jsr PLSPRANI
 343             clc
 344             dex
 345 ;
 346 MCSET       lda PLRDIR
 347 MCSETIN     cmp #3
 348             bne MCSETA
 349             lda #12
 350             ldy #11
 351             bne MCSETB
 352 MCSETA      lda #11
 353             ldy #9
 354 MCSETB      sta V+34
 355             sty V+35
 356             clc
 357             dex
 358 ;
 359 ;------------------------------
 360 ;
 361 EINIT       lda MAPSPALTE
 362             cmp #ANFPOS
 363             bne EINITA
 364 ;
 365             lda #0      ;ANFANG
 366             sta PLRPOSX
 367             jsr MCSETIN
 368             lda #$AF
 369             sta V1+3
 370             lda #%00000001
 371             sta V1
 372             jmp EINITB
 373 ;
 374 EINITA      lda #10     ;ENDE
 375             sta PLRPOSX
 376             lda #3
 377             jsr MCSETIN
 378             lda #$FF
 379             sta V1+3
 380             lda #199
 381             sta V1+5    ;XP  SCHIFF
 382             lda #139
 383             sta V1+6    ;YP  SCHIFF
 384             lda #9
 385             sta V1+20   ;COL SCHIFF
 386             lda #FSS+4  ;SHP SCHIFF
 387             sta V1+28
 388             lda #%00000011
 389             sta V1
 390 ;
 391 EINITB      lda #$85
 392             sta V1+4
 393             lda #%00000000
 394             sta V1+1
 395             lda #FMS
 396             sta SHAPENR
 397             sta V1+27
 398             lda #%00010000
 399             sta ZSMCFLG
 400             lda #SPOS
 401             sta SHIPPOS
 402             lda #3
 403             sta MAPMOVDIR
 404             dex

